package com.kintreda.ieco_server.util.redis;
import org.apache.shiro.crypto.hash.SimpleHash;
import com.kintreda.ieco_server.util.StringUtil;

/**
 * redis key 信息管理
 * @author HuangZhongYao
 * createDate:2017-07-20
 */
public class RedisKey {

	public static final String TOKEN_SATE = "5C47337522AA4C26BC4ECA0B52E14EC2";
	
	//短信有效期 2 分钟
	public static final int registerCodeMilliseconds = 2;
	
	//用户token有效时间7天(7*24*60)
	public static final int tonkenOutSeconds = 10080;
	
	/*****************************************************
	 * 登录成功后 按用登录手机号获得token
	 * @param userId
	 * @return
	 */
	public static String tokenKey(String userId) {
		
		return new StringBuffer(new SimpleHash("MD5",userId,StringUtil.getRandomNum(4),1).toString()).append(TOKEN_SATE).toString().toUpperCase();
	}
	
	/*****************************************************
	 * 设置注册手机验证码 key
	 * @param mobile 手机号码
	 * @return 返回key
	 */
	public static String getRegisterCode(String mobile) {
		return String.format("USER:REGISTERCODE:%s", mobile).toUpperCase();
	}
	
	
	/*****************************************************
	 * 重新设置密码手机验证码 redis key
	 * @param mobile 手机号码
	 * @return 返回key
	 */
	public static String getRePasswordCode(String mobile) {
		return String.format("USER:REPASSWORDCODE:%s", mobile).toUpperCase();
	}
	
	
	/*****************************************************
	 * 重新设置手机号码redis
	 * @param mobile 手机号码
	 * @return 返回key
	 */
	public static String getReMobileCode(String mobile) {
		return String.format("USER:REMOBILECODE:%s", mobile).toUpperCase();
	}
	
	
	/*****************************************************
	 * 新手机设置手机号码redis
	 * @param mobile 手机号码
	 * @return 返回key
	 */
	public static String getNewMobileCode(String mobile) {
		return String.format("USER:NEWMOBILECODE:%s", mobile).toUpperCase();
	}
	
	
	/*****************************************************
	 * 发送验证码时设备号redis
	* @Title: setSmsDeviceIdentity 
	* @Description: 设置手机设备号
	* @param deviceIdentity
	* @return String
	* @throws 
	*/
	public static String getSmsDeviceIdentity(String deviceIdentity) {
		return String.format("USER:MOBILEDEVICEIDENTITY:%s", deviceIdentity).toUpperCase();
	}
	
	
	/*****************************************************
	 * 发送验证码时ip地址redis
	* @Title: setSmsRemoteAddr 
	* @Description: 设置请求IP
	* @param remoteAddr
	* @return String
	* @throws 
	*/
	public static String getSmsRemoteAddr(String remoteAddr) {
		return String.format("USER:REMOTEADDRESS:%s", remoteAddr).toUpperCase();
	}
}
